package com.atwisdom.star.core.bsl.planner;

import com.atwisdom.star.core.bsl.planner.entity.*;

import java.util.List;
import java.util.Map;

public interface MrpBslService {
    /**
     * 合并map
     *
     * @param firstMap  第一个map
     * @param secondMap 第二个map
     * @return
     */
    void mergedMap(Map<String, Double> firstMap, Map<String, Double> secondMap);

    /**
     * 返回采购订单数量
     *
     * @return
     */
    Map<String, Double> fetchProductionPlanOrder(String condition);

    /**
     * 获取生产工单未完工数据
     *
     * @param condition 查询条件
     * @param className 类名
     * @return 返回结果
     */
    Map<String, Double> fetchWorkOrder(String condition, String className);

    /**
     * 获取生产工单未完工数据
     *
     * @param condition 查询条件
     * @param className 类名
     * @return 返回结果
     */
    Map<String, Double> fetchWorkReport(String condition, String className);

    /**
     * 获取生产返修报工单数量统
     *
     * @param condition 查询条件
     * @param className 类名
     * @return 返回结果
     */
    Map<String, Double> fetchRepairWorkReport(String condition, String className);

    /**
     * 获取销售返修单计划数量统计
     *
     * @param condition     查询条件
     * @param hierCondition 明细查询条件
     * @param className     类名
     * @return 返回结果
     */
    Map<String, Double> fetchSaleRepairWorkOrder(String condition, String hierCondition, String className);

    /**
     * 获取销售返修单计划数量统计
     *
     * @param condition     查询条件
     * @param hierCondition 明细查询条件
     * @param className     类名
     * @return 返回结果
     */
    Map<String, Double> fetchSaleRepairWorkReport(String condition, String hierCondition, String className);

    /**
     * 返回采购计划数量
     *
     * @return
     */
    Map<String, Double> fetchPurchasePlanOrder(String condition);

    /**
     * 采购订单明细在途量统计
     *
     * @param condition     主表条件
     * @param hierCondition 子表条件
     * @param className     类名
     * @return
     */
    Map<String, Double> fetchPurchaseOrderSub(String condition, String hierCondition, String className);

    /**
     * 采购订单明细合并，并返回map<物料,数量>
     *
     * @param planOrders 采购订单参数
     * @return 返回map
     */
    Map<String, Integer> fetchPurchasePlanOrderMap(List<PurchasePlanOrder> planOrders);

    /**
     * 返回委外计划数量
     *
     * @return
     */
    Map<String, Double> fetchOutsourcingPlanOrder(String condition);

    List<OutsourcingProduct> fetchOutsourcingProduct(Long orderId);

    List<OutsourcingSubMaterial> fetchOutsourcingSubMaterial(String bCode, double quantity);
    /**
     * 委外订单明细在途量统计
     *
     * @param condition     主表条件
     * @param hierCondition 子表条件
     * @param className     类名
     * @return
     */
    Map<String, Double> fetchOutsourcingOrderSub(String condition, String hierCondition, String className);

    /**
     * 采购订单明细合并，并返回map<物料,数量>
     *
     * @param planOrders 采购订单参数
     * @return 返回map
     */
    Map<String, Integer> fetchProductionPlanOrderMap(List<ProductionPlanOrder> planOrders, List<ProductionPlanOrderSub> planOrderSubs);


}
